package cl.zeke.pizzastore.vista.managedbeans;

import cl.zeke.comun.dto.Persona;
import java.io.Serializable;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.http.ResponseEntity;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

/**
 *
 * @author taller
 */
@Component
@Scope("view")
public class RemoteClientBean implements Serializable {

    private static Logger log = LoggerFactory.getLogger(RemoteClientBean.class);

    @Autowired
    private JmsTemplate jmsTemplate;

    private String salida;

    public void consumirRestFul1() {
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<Persona> response = restTemplate.getForEntity(
                "http://localhost:8080/remoto/spring/restful/persona/hola",
                Persona.class);
        Persona p = response.getBody();
        salida = "p: " + p.getNombre();
        for (Persona f : p.getFamiliares()) {
            salida += " f: " + f.getNombre() + " " + f.getEdad();
        }
    }

    public void guardarPersonaRest() {
        //crear persona
        Persona p = new Persona();
        p.setNombre("persona desde cliente");
        p.setEdad(21);

        Persona p2 = new Persona();
        p2.setNombre("familiar");
        p2.setEdad(10);

        p.setFamiliares(new Persona[]{p2, p2});

        RestTemplate restTemplate = new RestTemplate();
        Boolean respuesta = restTemplate.postForObject(
                "http://localhost:8080/remoto/spring/restful/persona",
                p,
                Boolean.class);
        salida = respuesta + "";

    }

    public void consumirRemoteQueue() {

        //crear persona
        final Persona p = new Persona();
        p.setNombre("persona desde cliente");
        p.setEdad(21);

        Persona p2 = new Persona();
        p2.setNombre("familiar");
        p2.setEdad(10);

        p.setFamiliares(new Persona[]{p2, p2});

        for (int i = 0; i < 3; i++) {
            p.setNombre("persona iteracion: " + (i + 1));
            jmsTemplate.send("remoto.queue", new MessageCreator() {
                @Override
                public Message createMessage(Session session) throws JMSException {
                    return session.createObjectMessage(p);
                }
            });
            log.debug("enviado mensaje: " + (i + 1));
        }

    }

    public String getSalida() {
        return salida;
    }

    public void setSalida(String salida) {
        this.salida = salida;
    }

}
